#include <Exceptions.h>
#include <Utils/String.h>

using namespace Utils;

Exception::Exception() : msg()
{
}

Exception::Exception(const String &m) : msg(m)
{
}

Exception::~Exception()
{
}

const String &Exception::GetMessage() const
{
	return msg;
}

ArgumentException::ArgumentException() : Exception()
{
}

ArgumentException::ArgumentException(const String &m) : Exception(m)
{
}

NotImplementedException::NotImplementedException() : Exception()
{
}

NotImplementedException::NotImplementedException(const String &m) : Exception(m)
{
}

NotImplementedException::NotImplementedException(const String &fn, const String &cn) : Exception(String("The function ") + fn + " of class " + cn + " has not been implemented yet.")
{
}

OutOfMemoryException::OutOfMemoryException() : Exception()
{
}

OutOfMemoryException::OutOfMemoryException(const String &m) : Exception(m)
{
}

ArgumentOutOfRangeException::ArgumentOutOfRangeException() : ArgumentException()
{
}

ArgumentOutOfRangeException::ArgumentOutOfRangeException(const String &m) : ArgumentException(m)
{
}

ArgumentOutOfRangeException::ArgumentOutOfRangeException(const String &paramName, int64_t minValue, int64_t maxValue) : ArgumentException(String("The value of ") + paramName + " must be in range " + minValue + " - " + maxValue)
{
}

ArgumentNullException::ArgumentNullException() : ArgumentException()
{
}

ArgumentNullException::ArgumentNullException(const String &m) : ArgumentException(m)
{
}

ArgumentNullException::ArgumentNullException(const String &paramName, const String &funcName) : ArgumentException(String("Parameter ") + paramName + " must be non NULL. Function: " + funcName)
{
}

WtfException::WtfException() : Exception()
{
}

WtfException::WtfException(const String &m) : Exception(m)
{
}
